class Solution {
public:
    int evalRPN(vector<string>& tokens) 
    {
        stack<int> nums; // 存储数字的栈
        
        for (const string& token : tokens) {
            // 判断是否是运算符
            if (token == "+" || token == "-" || token == "*" || token == "/") {
                // 弹出两个数字
                int num1 = nums.top();
                nums.pop();
                int num2 = nums.top();
                nums.pop();
                
                // 根据运算符计算并将结果压入栈中
                if (token == "+") {
                    nums.push(num2 + num1);
                } else if (token == "-") {
                    nums.push(num2 - num1);
                } else if (token == "*") {
                    nums.push(num2 * num1);
                } else if (token == "/") {
                    nums.push(num2 / num1);
                }
            } else {
                // 如果是数字，转换为整数并压入栈中
                nums.push(stoi(token));
            }
        }
        
        // 栈顶元素即为最终结果
        return nums.top();
    }
};